package com.java.architect.manager.aop;

import com.java.architect.utils.CacheType;

import java.lang.annotation.*;

/**
 * @author Java架构师之旅
 * @date 2022年05月26日 14:56
 */
@Inherited
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface DataCache {
    /**
     * 缓存类型
     */
    CacheType[] type() default CacheType.REDIS;

    /**
     * 缓存key 数据组
     */
    String group();

    /**
     * 缓存key
     */
    String key();

    /**
     * 缓存时间(秒)
     */
    long expire() default 60;

    /**
     * 缓存时间(秒)
     */
    long redisExpire() default -1L;

    /**
     * 缓存时间(秒)
     */
    long localExpire() default -1L;

    /**
     * 缓存 Null Object
     */
    boolean cacheNull() default true;

    /**
     * 缓存引用  改变方法返回值的属性为引用方法执行的结果
     * Change the property of the method's return value to the result of the execution of the referenced method
     */
    InventoryReference[] inventoryReference() default {};
}
